package leetcode.od;

import org.junit.Test;

import java.util.Scanner;

/**
 * @author pppppp
 * @date 2022/4/18 8:39
 * 描述
 * 现在有一种密码变换算法。
 * 九键手机键盘上的数字与字母的对应：
 * 1--1， abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9, 0--0，
 * 把密码中出现的小写字母都变成九键键盘对应的数字，如：a 变成 2，x 变成 9.
 * 而密码中出现的大写字母则变成小写之后往后移一位，如：X ，先变成小写，再往后移一位，变成了 y ，例外：Z 往后移是 a 。
 * 数字和其它的符号都不做变换。
 * 输入描述：
 * 输入一组密码，长度不超过100个字符。
 *
 * 输出描述：
 * 输出密码变换后的字符串
 *
 * 示例1
 * 输入：
 * YUANzhi1987
 * 复制
 * 输出：
 * zvbo9441987
 */
public class HJ21_简单密码 {
    @Test
    public void T_0(){
      String [] s = {"YUANzhi1987"};
      String [] ans = {"zvbo9441987"};
        for (int i = 0; i < s.length; i++) {
            System.out.println(decoded(s[i]).equals(ans[i]));
        }
    }

    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()){
            String s = scanner.nextLine();
            System.out.println(decoded(s));
        }
    }
    private static String decoded(String s) {
        char[] chs = s.toCharArray();
        StringBuilder sb = new StringBuilder();
        for (char ch : chs) {
            if(ch >= 'a'){
                sb.append(getNum(ch));
            }else if(ch >= 'A'){
                sb.append((char)( 'a' + (ch-'A' + 1)%26));
            }else {
                sb.append(ch);
            }
        }
        return new String(sb);
    }

    private static  String getNum(char ch) {
        //abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9
        if(ch <= 'c'){
            return "2";
        }
        if(ch <= 'f'){
            return "3";
        }
        if( ch <= 'i'){
            return "4";
        }
        if(ch <= 'l'){
            return "5";
        }
        if(ch <= 'o'){
            return "6";
        }
        if(ch <= 's'){
            return "7";
        }
        if(ch <= 'v'){
            return "8";
        }
        return "9";
    }
    private static  String getNum0(char ch) {
        //abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9
        if(ch >= 'a' && ch <= 'c'){
            return "2";
        }
        if(ch >= 'd' && ch <= 'f'){
            return "3";
        }
        if(ch >= 'g' && ch <= 'i'){
            return "4";
        }
        if(ch >= 'j' && ch <= 'l'){
            return "5";
        }
        if(ch >= 'm' && ch <= 'o'){
            return "6";
        }
        if(ch >= 'p' && ch <= 's'){
            return "7";
        }
        if(ch >= 't' && ch <= 'v'){
            return "8";
        }
        return "9";
    }
}
